-
Notifications
You must be signed in to change notification settings - Fork 176
Multi-Cluster: Adds v1alpha1 API Types and Docs #1658
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
✅ Deploy Preview for gateway-api-inference-extension ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Hold until #1374 is merged. /hold |
// | ||
// Controllers MAY raise this condition with other reasons, but should | ||
// prefer to use the reasons listed above to improve interoperability. | ||
InferencePoolConditionExported InferencePoolConditionType = "Exported" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's the value for a non-exported InferencePool? "Invalid" doesn't sound right IMO
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah +1, Added some suggested reasons above.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here are a few other options we can take:
- Do not define the reason at this time and leave it up to the implementation to surface.
- Rename "Invalid" to "Unknown" or "ApplyFailed" and require a message to be set with additional details.
- Proceed with https://github.com/kubernetes-sigs/gateway-api-inference-extension/pull/1658/files#r2383650354 recommendations.
WDYT?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Commit f0fbeb9 proceeds with option 3 above.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like the recommendations in 3. If the InferencePool has not been exported, then that should be clear
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@keithmattix commit f0fbeb9 proceeds with option 3, PTAL.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @danehans! This mostly LGTM. I'm going to be OOO for the next few days but please feel free to go ahead and move forward with this once my comments are resolved. @bexxmodd can also help with the reviews here. I'm sure we'll still have some things to tweak after we merge this, but I'd rather get something in soon so we can start on the implementation side.
// | ||
// Controllers MAY raise this condition with other reasons, but should | ||
// prefer to use the reasons listed above to improve interoperability. | ||
InferencePoolConditionExported InferencePoolConditionType = "Exported" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah +1, Added some suggested reasons above.
f0fbeb9
to
ac3dc45
Compare
} | ||
|
||
// InferencePoolImportStatus defines the observed state of the InferencePoolImport. | ||
type InferencePoolImportStatus struct { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we have some field like this in here? https://github.com/kubernetes-sigs/gateway-api/blob/530c1ee46e0d851d369810e4500f0339c40d8aa1/apis/v1/gateway_types.go#L1022
This can be useful for some implementation specific metadata propagation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@bexxmodd adding ^ would modify the proposal. I can potentially see differing views on how this metadata should be propagated. If this important to you, can you create an issue or link it to here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SG. I'll create a new issue.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@bexxmodd when you have a moment, please link the issue here and resolve this conversation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/link #1674
ac3dc45
to
b048b79
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/lgtm - thanks Daneyon!
/lgtm |
/LGTM /Approve thanks @danehans |
Tagging since the latest commit resolves @robscott feedback and multiple reviewers tagged. /lgtm |
@danehans: you cannot LGTM your own PR. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
Thanks @danehans! /lgtm |
api/v1/inferencepool_types.go
Outdated
// | ||
// +required | ||
//nolint:kubeapilinter // should not have omitempty since the field is required | ||
ControllerName ControllerName `json:"controllerName"` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should make this field optional so the change is backwards-compatible, but other than that, there's plenty of precedence for this field existing in GW API statuses. It was an accidental omission from the v1 API.
As far as the mechanics of API versions - we'd actually have to create v2alpha1
if we wanted to make breaking changes. In Gateway API, we created an "experimental" channel that allows us to gate fields like this by only including them in experimental CRDs (conceptually similar to feature gates in k/k). While I think that's inevitable here, I personally don't think this change is large enough to justify creating the separate release channel.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SGTM
/hold |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @danehans!
api/v1/inferencepool_types.go
Outdated
// | ||
// +required | ||
//nolint:kubeapilinter // should not have omitempty since the field is required | ||
ControllerName ControllerName `json:"controllerName"` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should make this field optional so the change is backwards-compatible, but other than that, there's plenty of precedence for this field existing in GW API statuses. It was an accidental omission from the v1 API.
As far as the mechanics of API versions - we'd actually have to create v2alpha1
if we wanted to make breaking changes. In Gateway API, we created an "experimental" channel that allows us to gate fields like this by only including them in experimental CRDs (conceptually similar to feature gates in k/k). While I think that's inevitable here, I personally don't think this change is large enough to justify creating the separate release channel.
/lgtm I think we should address:
But otherwise everything sounds good |
Signed-off-by: Daneyon Hansen <[email protected]>
Signed-off-by: Daneyon Hansen <[email protected]>
Signed-off-by: Daneyon Hansen <[email protected]>
754b64b makes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @danehans!
// Name of the exporting cluster (must be unique within the list). | ||
// | ||
// +kubebuilder:validation:Required | ||
Name ClusterName `json:"name"` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was chatting with @bexxmodd about this earlier today and he pointed out that we likely also need some basic information about the EPP in each cluster here. I think this can/should be an additive change, so don't want to block this PR for this, just raising it as an addition that would be helpful.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It could also be useful to store some per-cluster metadata beyond name, maybe conceptually similar to the infrastructure
field we have on Gateway. Again, not a blocker, but probably worth a follow up PR if @bexxmodd can squeeze it in.
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: bexxmodd, danehans, robscott The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/unhold Thanks! |
/lgtm |
What type of PR is this?
/kind documentation
/kind feature
What this PR does / why we need it:
Which issue(s) this PR fixes:
Fixes #1654
Does this PR introduce a user-facing change?: